In web-based systems, such as electronic commerce systems, when data is requested by a client from a server, it is often the case that the web server must query a database to locate the requested data. This database access requires time and use of system resources. To speed up future requests, frequently accessed pieces of data are typically stored (“cached”) in memory or in a more easily accessible area so that a later request can be serviced more quickly, without repeatedly querying the database. The data is stored in a cache, together with an index or “cache key”, which is used to identify each piece of cached data. Searching for data using the cache key is a faster process than retrieving the same data from a database a second time.
In electronic commerce, communications between a server and a web browser client typically require authorization of the client, to permit a client access only to certain data stored by the server. Such data may include contract information or pricing information which is exclusive to that client; other clients of the web server are not entitled to view this information.
One approach to identifying the client to the server is to initially authenticate the client and to then provide a session identifier to the client in the form of a hypertext transfer protocol (HTTP) cookie. A cookie, which is a form of persistent state object, is a small piece of data generated by the server and which is intended to be passed by the client with every subsequent client request to any server in a defined domain. Upon receipt of the request, the server can verify the client's entitlement to the requested information by comparing the contents of the cookie to the client records stored on the server. Such an approach is disclosed, for example, in U.S. Pat. No. 5,875,296 to Shi et al. (Feb. 23, 1999) in which a cookie including a client identifier is used to access an in-memory credential database used to allow or disallow access to files on a distributed file system.
Data and cookies that are transmitted between servers and clients on the Internet are subject to certain security risks unless measures are taken to secure communications between the client and server. An unauthorized user at a routing point or at another server in a cookie's domain may capture the packets transmitted between the client and the server and read the data contained in the transmitted cookie. Alternatively, a user may edit the contents of his or her own authorized cookie and alter the session data contained therein to construct a fraudulent session. For example, if the session data includes a contract identification number, the user could edit the cookie to insert a different number and thereby gain access to unauthorized data or resources when the edited cookie is transmitted to the server in a subsequent request. An unauthorized user may furthermore “steal” a valid cookie from an authorized user, and use the cookie to replay a valid session, thereby gaining unauthorized access to the server (a “replay attack”).
A cookie that includes information about authorizations provided to a client, as described above, that is submitted with a client request for cached data is potentially subject to unauthorized alteration or access. The cached data is therefore potentially vulnerable to unauthorized access. Such security risks are referred to in U.S. Patent Application 2002/0007402 to Huston et al. (published Jan. 17, 2002). The Huston application describes a list of users that is maintained to ensure that requests for cached data are authorized. The list is checked prior to accessing the cached data. Redundant requests from a single client are also ignored to prevent replay attacks.
However, when data is cached by a server system, the data cache itself does not carry out an authentication function. If a valid cache key is provided to the data cache, the data cache will supply the data indexed by the cache key. The approaches referred to above, that require a look up of authorization information on the server before granting cache access, include a further client authentication step that delays access to the cached data.
It is therefore desirable to provide a cache for web session information that provides authorized secure access to the cached data but that does not require a further look up of authorization information maintained by the server prior to accessing the cache.